Enterprise software systems are typically sophisticated, large-scale systems that support many, e.g., hundreds or thousands, of concurrent users. Examples of enterprise software systems include financial planning systems, budget planning systems, order management systems, inventory management systems, sales force management systems, business intelligent tools, enterprise reporting tools, project and resource management systems and other enterprise software systems.
A user may be connected to the enterprise software system via a network. Typically, a user device includes at least one cache to store data requested by the user. In this way, system performance can be improved since future requests for data can be fulfilled locally from the cache without having to repeatedly retrieve the same data from the enterprise software system. Many conventional caching approaches are complex and utilize database applications, such as Access™ from Microsoft Corporation of Redmond, Wash.
In some environments, the user device may concurrently run several software applications, such as modeling tools and reporting tools, in the case of an enterprise planning system. In that case, the cache must be capable of handling concurrent data requests from the multiple software modules. However, conventional caching techniques often have difficulties dealing with software module contention or do not allow concurrent access to the cache at all. Furthermore, as the cache continues to store retrieved data, the large amount of storage space required by the cache may disrupt operation of the user device, often requiring the user to intervene to reduce the size of the cache.